perm filename DDT.REG[UP,DOC]1 blob
sn#196259 filedate 1976-01-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 DDT User's Information
C00018 ENDMK
C⊗;
DDT User's Information
DDT is a program debugging aid that is loaded into the same core image as
the program being debugged. DDT can be entered via the monitor DDT command
or by a program transfer to the external label DDT or by a program transfer
to the address contained in the right half of JOBDDT.
DDT can also be entered as a result of executing an instruction on which
a breakpoint has been set.
Once DDT has been entered the user may examine and modify the contents of
his accumulators and other memory locations. To return to the execution
of the program an $P command (proced from a breakpoint) or adr$G (start
execution at adr) may be used. When DDT is entered via the DDT command,
the PC of the interrupted program is stored in JOBOPC.
The following is a quick summary of DDT for people who already know how
to work DDT in general. For further information, consult DEC documentation
General -
$ = Altmode
n = a number
$n = a decimal number always!
Input modes
$n% Input a list of n-bit octal bytes, separated by commas, terminated by $.
If n=0 use the byte mask ($M+2) to define arbitrary byte boundaries
"<delimiter>text<delimiter>
Left justified ascii text (up to five characters) Note: to get CRLF
entered you must type both CR and LF. If more than five characters
are typed, only the last five are used.
"<character>$
Right justified ascii character.
$"<delimiter>text<delimiter>
Left justified sixbit text (lower case typin converted to upper case).
The last six (or fewer) characters are used.
$"<character>$
right justified ascii character
$$7"<delimiter>text<delimiter>
Left adjuseted ASCIZ string, five characters per word.
$$"<delimiter>text<delimiter> or $$n"<delimiter>text<delimiter> (n not 7)
Left adjuseted sixbit string, six characters per word. Ends with
a zero byte or zero word.
Output modes
$A Absolute
$C Full word constant in current radix
$F Floating point
$H Halfword format
$nJ Output in flag mode using the n-th flag table.
Each flag table contains =36 radix50 flag names (flag name for
bit 0 is first). The first word in the list of flag tables is
found by looking in $M+3 (FLGPTR). Each word in the list of flag
tables is a right-half pointer to a flag table and a left-half
pointer to the next word in the list (a zero left half terminates).
$nL Output right half of cell as left half flags using n-th flag table.
This is suitable for looking at MOVSI or TLxx instructions.
$nO Output cell in n-bit bytes
If n=0 use the byte mask ($M+2) to define arbitrary byte boundaries
$R Relocatable
$nR Set typeout radix to n.
$S Symbolic
$nT n-bit text bytes. If n is omitted output 7-bit ascii, left adjusted,
except if the first byte is null, output one right adjusted character.
If n is present it should be one of 5, 6, or 9: 6=sixbit, 5=radix50,
9=Stanford ascii with bucky bits. Other values of n presently print
in 7-bit ascii.
$U each halfword as numeric in the current radix, unless $10R in which
case output full word in radix 10
$nV Output right half of cell as right half flags using n-th flag table.
This is suitable for looking at MOVEI or TRxx instructions.
Special Characters
addr/ open cell in current mode
addr[ open cell as a number in the current radix
addr] open cell as symbolic
addr! open cell and suppress typeout
addr\ open cell in current mode and don't change "."
CR Closes and changes (if user typed a new value) the current cell.
LF Like CR and opens .+1.
↑ Like CR and opens .-1.
TAB Like CR then opens the cell pointed to by right side of current cell.
≥ (control ] on ttys)
Closes and does NOT change the current cell then opens the cell
pointed to by left side of current cell.
; retype in current mode (usually following a temporary mode change)
= retype like $U format (half word numeric in current radix)
$= retype like $C format (full word numeric in current radix)
← retype in symbolic mode.
? typeout all undefined symbols
Searches
$M Contains the search mask. Put 1 bits in it where you want to look.
first<last>arg$E
Effective address search for intructions pointing to arg in the
range first to last
first<last>arg$N
Search for words NOT containing arg in the range first to last.
first<last>arg$W
Search for words containing arg in the range first to last.
first<last>arg$$Z
Write the value arg into all words in the range first to last.
Special values
. (period) has the value of the current address
$I (exec ddt) has the state of the PI system (CONI PI,)
$Q Has the last value typed by ddt.
$nB Address of the four words associated with breakpoint n.
The first word contains the address of the breakpoint in the
right half, and the address of the cell to open in the left
half.
The second word is the conditional instruction. If this is zero, or
if when exected it causes one skip, then the procede counter
is decremented and if it becomes non-positive, the breakpoint occurs.
If the conditional instruction does not skip, no break is taken.
If the conditional instructions skips twice, the break is taken
regardless of the procede counter.
The third word is the procede counter.
If the fourth word is non-zero it is assumed to be the address of
an ASCIZ string which will be used to set $M-1 (see below) to
cause this string to be used for input instead of TTY input.
$M-4 (EXEC DDT) If non-zero, DDT output goes to the LPT
$M-3 (EXEC DDT) Stores APR CONI bits here when DDT is entered
$M-2 If non zero, this points to a routine to be called to output
each character. The character to be output is in T (ac 5) and
the routine should return via POPJ 3, without having clobbered
any acs.
$M-1 If non zero is taken as a byte pointer to an ASCIZ string which
is used instead of the TTY for input.
$M Search mask
$M+1 Parameter for symbolic disassembly. If the value disassembed
minus the best symbol is less than this number (MXINC) then
the dissambler will print the symbol name plus the difference,
if the difference is larger than this value, then the value
being disassembled will be printed as a number.
$M+2 Byte input/output mask for $0% and $0O commands.
$M+3 First word in the list of flag tables. (See $F.)
Symbol manipulations
$D Suppress the last symbol typed. Retype the same value.
sym$K Suppress output of the named symbol
sym$$K Suppress input and output of this symbol
sym$: Open the symbol table of the program named sym.
$: Type a list of all program names.
sym: Define sym to be the currently open location.
val<sym:
Define sym to have value val.
sym$& Open the symbol table of the block named sym in the currently
open program. Also accessible will be all symbols in blocks
that contain the opened block.
$& Type a list of all block names in the currently open program.
Program control
adr1(adr2)$nB
Set breakpoint n at adr1. When breakpoint is hit it will type the
contents of adr2. The n and (adr2) are optional.
adr1(adr2)$$nB
Same as above except DDT will procede from the breakpoint automatically.
Auto procede continues until typin is present when the breakpoint is
hit (see $$P).
$B remove all breakpoints
0$nB remove breakpoint n.
adr$G Start execution at adr. If adr is omitted, execution starts at
the location pointed to by the right half of JOBSA (in exec DDT
the right half of STARTA is used instead of JOBSA). If JOBSA
(STARTA) contains a zero starting address, $G with no argument
is illegal. Incidently STARTA is located at DDTBEG+0.
adr$$G Same as adr$G except the argument is stored in the right half
of JOBSA (or STARTA) for subsequent $G commands.
$P Procede from breakpoint.
n$P Procede n times from this breakpoint
$$P Procede automatically until the typein is present at the breakpoint.
instr$X Executes the instruction that was typed. If no argument is given
then the one instruction at the current breakpoint location is
single-stepped. Repetitions of $X cause subsequent instructions to
be single stepped. After single stepping, a $P command will return
to the normal execution of the program.
Assembly operations
+-*' are arithmetic operators
, is a separator denoting ac or device field
,, separates half-words
numeric typin is octal except digits followed by a decimal point
are radix 10, except if further digits following the point are
typed, input is floating point. Floating point number may be
followed by E, an optional plus or minus, and an exponent.
() swap the argument and add it into the assembled word.
@ Set bit 13 in the word being assembled.
blank is a separator and adding operator in the word assembler.
sym& sets block name to sym for the next symbol that's input.
Commands for UEDDT
↓ Like CR except it deposits changes on the Librascope
$n¬ Examine core image of Timesharing job n.
$$n¬ Examine core image of Timesharing job n using its symbols.
If n is zero or omitted in either of the above, UEDDT will
examine the timesharing system, using the EPT (where set,
or physical pages where the EPT has no entry) to accomplish
mapping.
n$¬ Examine physical core, with page n being page 0 in the space
being examined. If n is negative, examination will be via
the EPT.
Paper tape control (Special EXEC DDT version only)
$↑Q (That's control-Q) Punch loader.
first<last$↑R
Punch data from core range to tape.
addr$↑S Punch addr as the starting address.
↑T Punch currently open location as one tape data block
first<last$Y
Read tape into core
first<last↑V
Read tape and verify by comparing it with core.